<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 1.js 如何知道闭包内部函数用了哪些父函数的局部变量
            // 不用知道 没用显示的引用任何一个父级变量 一直都在
            // 闭包保留全部父级变量 不论用没用
        // 2.js 如何确定onclick 消失后要回收哪些变量？
        // 父级的变量不回收 父级的父级？
            // 会一直沿着作用域链影响
        let obj={c:1}
        function show(){
            let a=12;
            let b=15;
            document.onclick=function(){
                alert(eval(prompt("请输入一个表达式")));
            }
        }
        show();
        setTimeout(()=>{
            document.onclick=null;
            obj=null;//手动垃圾回收
        },5000)
        // 计数器
        let a={naem:'blue',age:18}; //a 引用了对象 counter +1 1
        let b=a;// b也引用了 对象   counter +1 2
        a=null;//  counter -1 1
        b=bull;// -1 0 可回收
        // 闭包=外部变量+函数
        function fn1(){
            let a =12;
            function fn2(){
                let b=5;
                document.onclick=function(){

                }
            }
        }
    </script>
</body>
</html>